package com.qf.service.impl;

import com.alibaba.druid.util.StringUtils;
import com.qf.dao.UserDao;
import com.qf.dao.impl.UserDaoImpl;
import com.qf.pojo.PageBean;
import com.qf.pojo.User;
import com.qf.responsdata.ResponseData;
import com.qf.service.UserService;
import com.qf.utils.MailUtils;

import java.sql.SQLException;
import java.util.List;

/**
 * @author Kuke
 * @date 2022/12/27 17:02
 * 针对用户的业务接口实现
 */
public class UserServiceImpl  implements UserService {
    /**
     * 通过用户名校验用户
     * @param username  用户的昵称
     * @return  返回的自定义响应实体
     */
    @Override
    public ResponseData checkUserByUsername(String username) {

        try {
            //调用数据访问接口UserDao
            UserDao userDao = new UserDaoImpl() ;
            User user = userDao.selectUserByUsername(username);
            //封装ResponseData对象
            ResponseData rd = new ResponseData() ;
            //如果当前user不为null
            if(user!=null){
                //查到了
                //设置code 是1
                rd.setCode(1) ;
                rd.setMsg("用户名太受欢迎,请更换");
            }else{
                //没查到
                rd.setCode(0) ;
                rd.setMsg("恭喜您,昵称可用");
            }
            return rd ;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

    /**
     * 用户是否注册成功
     * @param user   用户实体
     * @return  返回true,能注册;false,注册失败
     */
    @Override
    public void addUser(User user) {
        try {
            //调用针对用户的数据访问接口
            UserDao userDao = new UserDaoImpl() ;
            //插入数据
            int count = userDao.insertUser(user);


            if(count>0){
                //注册成功,向用户注册的有效邮箱中发送一份邮件
                //邮件技术 javax.mail.jar包
                //给用户注册的邮箱上发送一份邮件

                //参数1:注册用户的邮箱地址
                //参数2:正文内容
                //参数3:主题(邮件标题)
                String content = "欢迎注册, <a href='http://localhost:8080/MavenProject_2211_war_exploded/user?methodName=activeUser&code="+user.getCode()+"'>点击激活,成为会员</a>" ;
                MailUtils.sendMail(user.getEmail(),content,"用户邮件激活") ;
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }

    /**
     * 通过激活码激活用户
     * @param code 用户的激活码
     */
    @Override
    public void activeUser(String code) {
        try {
            //调用用户数据访问接口
            UserDao userDao = new UserDaoImpl() ;
            User user = userDao.selectUserByCode(code);
            //判断如果是存在
            if(user!=null){
                //找到了,修改当前指定用户的state激活状态
                user.setState(1);//设置状态1
                userDao.updateUserState(user) ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }

    /**
     * 登录功能
     * @param username 前台用户名
     * @param password 前台的输入密码
     * @return 返回User实体
     */
    @Override
    public User userLogin(String username, String password) {
        try {
            //调用数据访问接口
            UserDao ud = new UserDaoImpl() ;
            User user = ud.selectUserByUserName(username);
            //如果当前user不为null
            if(user!=null){
                //找到了
                if(password.equals(user.getPassword())){
                    //用户名和密码都一致
                    return  user ;
                }
            }
            } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }


}
